void CarToPol (MaxGV, ImSize, MagThres, DeltaX, DeltaY, GradMag, GradAng)
int  MaxGV, ImSize, MagThres;
int  ** DeltaX;
int  ** DeltaY;
BYTE ** GradMag;
BYTE ** GradAng;
{
   int  r,c, dX,dY, Mag, MaxMag;

   for (r=0; r<ImSize; r++) {
      for (c=0; c<ImSize; c++) {
         GradMag [r][c] = 0;
         GradAng [r][c] = 0;
   }  }

   MaxMag = 0;
   for (r=0; r<ImSize; r++) {
      for (c=0; c<ImSize; c++) {
         dX = DeltaX [r][c];
         dY = DeltaY [r][c];
         Mag = abs(dX) + abs(dY);
         if  (Mag > MaxMag)  MaxMag = Mag;
   }  }

   for (r=0; r<ImSize; r++) {
      for (c=0; c<ImSize; c++) {
         dX = DeltaX [r][c];
         dY = DeltaY [r][c];
         Mag = abs(dX) + abs(dY);

         if (Mag > MagThres) {
            GradMag [r][c] = (BYTE) (((long)Mag * MaxGV) / MaxMag);
            GradAng [r][c] = (BYTE) ((DiscAtan256 (dY,dX) + 64)  &  255);
}  }  }  }
